import App from "./App"; //	引入App根组件
import Vue from "vue"; //	引入vue

import store from "./store"; //	vuex
Vue.prototype.$store = store;

import _api from "./common/api.js"; //	引入 自定义ajax插件 api集中管理
import ajax from "./common/ajax.js";

import uView from "uview-ui"; //	引入uView-ui
Vue.use(uView); //	注册uView

import login from "@/components/login.vue"; //	登录组件
Vue.component("login", login);

import { router, RouterMount } from "./router.js"; //路径换成自己的
Vue.use(router);
//全局路由前置守卫
router.beforeEach((to, from, next) => {
  next();
});
// 全局路由后置守卫
router.afterEach((to, from) => {
  store.commit("updataRouterFrom", from.path);
});

// 添加请求拦截器
ajax.interceptors.request.use(
  (config) => {
    // 在发送请求前做些什么
    if (store.state.userInfo.userInfo && store.state.userInfo.userInfo.token) {
      config.header = {
        "x-token": store.state.userInfo.userInfo.token,
      };
    }
    return config;
  },
  (error) => {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
ajax.interceptors.response.use(
  (response) => {
    // 对响应数据做些什么
    if (response.statusCode === 200) {
      return response.data.data;
    }
    return response;
  },
  (error) => {
    // 对响应错误做些什么
    return Promise.reject(error.data);
  }
);

Vue.prototype._api = _api; //	所有请求api方法挂载到全局

Vue.config.productionTip = false;
App.mpType = "app";

const app = new Vue({
  store,
  ...App,
});

//v1.3.5起 H5端 你应该去除原有的app.$mount();使用路由自带的渲染方式
// #ifdef H5
RouterMount(app, router, "#app");
// #endif

// #ifndef H5
app.$mount(); //为了兼容小程序及app端必须这样写才有效果
// #endif

// 	// #ifndef VUE3
//	// #endif

// // #ifdef VUE3
// import { createSSRApp } from 'vue'
// export function createApp() {
//   const app = createSSRApp(App)
//   return {
//     app
//   }
// }
// // #endif
